# Copyright 2019 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# NOTE: This file is auto generated by the elixir code generator program.
# Do not edit this file manually.

defmodule GoogleApi.Forms.V1.Model.WriteControl do
  @moduledoc """
  Provides control over how write requests are executed.

  ## Attributes

  *   `requiredRevisionId` (*type:* `String.t`, *default:* `nil`) - The revision ID of the form that the write request is applied to. If this is not the latest revision of the form, the request is not processed and returns a 400 bad request error.
  *   `targetRevisionId` (*type:* `String.t`, *default:* `nil`) - The target revision ID of the form that the write request is applied to. If changes have occurred after this revision, the changes in this update request are transformed against those changes. This results in a new revision of the form that incorporates both the changes in the request and the intervening changes, with the server resolving conflicting changes. The target revision ID may only be used to write to recent versions of a form. If the target revision is too far behind the latest revision, the request is not processed and returns a 400 (Bad Request Error). The request may be retried after reading the latest version of the form. In most cases a target revision ID remains valid for several minutes after it is read, but for frequently-edited forms this window may be shorter.
  """

  use GoogleApi.Gax.ModelBase

  @type t :: %__MODULE__{
          :requiredRevisionId => String.t() | nil,
          :targetRevisionId => String.t() | nil
        }

  field(:requiredRevisionId)
  field(:targetRevisionId)
end

defimpl Poison.Decoder, for: GoogleApi.Forms.V1.Model.WriteControl do
  def decode(value, options) do
    GoogleApi.Forms.V1.Model.WriteControl.decode(value, options)
  end
end

defimpl Poison.Encoder, for: GoogleApi.Forms.V1.Model.WriteControl do
  def encode(value, options) do
    GoogleApi.Gax.ModelBase.encode(value, options)
  end
end
